-
Notifications
You must be signed in to change notification settings - Fork 38
Simplify Workflow Interface #330
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
/unittest-all |
Summary of ChangesHello @pan-x-c, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly simplifies the interface for defining workflow behaviors by migrating key properties from instance-level methods to class-level attributes. This change enhances clarity and consistency in workflow declarations, particularly for features like resettability, repeatability, and asynchronous execution. Concurrently, the underlying system for managing auxiliary models has been improved to correctly provision synchronous or asynchronous OpenAI clients based on the workflow's declared asynchronous nature, ensuring proper integration and functionality. Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request does a great job of simplifying the workflow interface by replacing instance properties with class properties (can_reset
, can_repeat
, is_async
) and moving rollout_args
into SimpleWorkflow
. The changes are applied consistently across a large number of files, including documentation and tests.
However, the refactoring of rollout_args
has introduced a critical issue in several workflow classes that inherit from Workflow
but not SimpleWorkflow
. These classes still attempt to access self.rollout_args
, which no longer exists in the base Workflow
class, and will cause runtime errors. I've left specific comments on the affected files with suggestions on how to fix this.
Once these issues are addressed, this will be a solid improvement to the codebase.
trinity/common/workflows/envs/agentscope/agentscopev1_search_workflow.py
Show resolved
Hide resolved
Summary
Skipped
Tests
Github Test Reporter by CTRF 💚 |
Minor comment, Others LGTM |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR refactors the Workflow
interface to replace instance properties with class properties for workflow configuration, and ensures asynchronous workflows receive async-compatible auxiliary model clients.
Key Changes:
- Replaced instance properties (
resettable
,repeatable
,asynchronous
) with class properties (can_reset
,can_repeat
,is_async
) - Asynchronous workflows now receive
openai.AsyncOpenAI
clients instead ofopenai.OpenAI
clients for auxiliary models - Moved
rollout_args
property from baseWorkflow
class toSimpleWorkflow
class
Reviewed Changes
Copilot reviewed 24 out of 24 changed files in this pull request and generated no comments.
Show a summary per file
File | Description |
---|---|
trinity/explorer/workflow_runner.py | Added async client list and conditional logic to pass appropriate client type based on workflow's is_async property |
trinity/common/workflows/workflow.py | Replaced instance properties with class properties; deprecated old properties; moved rollout_args to SimpleWorkflow |
trinity/common/workflows/step_wise_workflow.py | Removed overridden property methods in favor of class properties |
trinity/common/workflows/simple_mm_workflow.py | Replaced asynchronous property with is_async class property |
trinity/common/workflows/math_ruler_workflow.py | Replaced asynchronous property with is_async class property |
trinity/common/workflows/math_rm_workflow.py | Replaced asynchronous property with is_async class property |
trinity/common/workflows/eval_workflow.py | Removed overridden property methods; added is_async class property |
trinity/common/workflows/envs/webshop/webshop_workflow.py | Replaced property methods with class properties |
trinity/common/workflows/envs/sciworld/sciworld_workflow.py | Replaced asynchronous property with is_async class property |
trinity/common/workflows/envs/email_searcher/workflow.py | Replaced property methods with class properties; updated rollout_args access pattern |
trinity/common/workflows/envs/alfworld/alfworld_workflow.py | Replaced asynchronous property with is_async class property |
trinity/common/workflows/envs/alfworld/RAFT_reflect_alfworld_workflow.py | Removed asynchronous property method |
trinity/common/workflows/envs/alfworld/RAFT_alfworld_workflow.py | Replaced property methods with class properties |
trinity/common/workflows/envs/agentscope/agentscopev1_search_workflow.py | Replaced property methods with class properties; updated rollout_args access pattern |
trinity/common/workflows/envs/agentscope/agentscopev1_react_workflow.py | Replaced property methods with class properties; updated rollout_args access pattern |
trinity/common/workflows/envs/agentscope/agentscopev0_react_workflow.py | Replaced property method with class property; updated rollout_args access pattern |
trinity/common/workflows/customized_toolcall_workflows.py | Replaced asynchronous property with is_async class property |
trinity/common/workflows/customized_math_workflows.py | Replaced asynchronous property with is_async class property |
trinity/common/workflows/agentscope_workflow.py | Removed property methods; added is_async class property |
trinity/common/workflows/agentscope/react/react_workflow.py | Replaced property methods with class property; updated rollout_args access pattern |
tests/explorer/workflow_test.py | Updated test workflows to use class properties; added validation for auxiliary_models client types |
tests/explorer/scheduler_test.py | Updated test workflows to use class properties |
docs/sphinx_doc/source_zh/tutorial/develop_workflow.md | Updated documentation to reflect class property usage |
docs/sphinx_doc/source/tutorial/develop_workflow.md | Updated documentation to reflect class property usage |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
Description
can_reset
,can_repeat
,is_async
to replace instance propertyresettable
,repeatable
,asynchronous
openai.AsyncOpenAI
auxiliary modelsrollout_args
intoSimpleWorkflow
Checklist
Please check the following items before code is ready to be reviewed.